home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
amok_lha
/
amok59.lha
/
AmokEd_V1.02b
/
doc
/
AmokEd.dok
next >
Wrap
Text File
|
1993-08-15
|
39KB
|
929 lines
---------------------------------------------------------------------------
A m o k E d
===================
Version 1.02
01 Okt 1991
---------------------------------------------------------------------------
AmokEd V1.2 © Copyright 1990,1991 Hartmut Goebel, Alle Recht vorbehalten
Das gesamte Paket ist Freeware. Es darf beliebig oft kopiert und
weitergegeben werden, solange:
· Das Paket vollständig und unverändert bleibt (Der Source-Code ist
optional, siehe auch Anmerkung unter Punkt 2: Umfang des Paketes)
· Mit der Weitergabe des Pakets in keiner Weise ein Gewinn erzielt wird
· Spenden sind willkommen
Weitere Informationen siehe AmokEd.LiesMich.
Hartmut Goebel Der Quelltext ist bei mir erhältlich:
Aufseßplatz 5 einfach Disk mit ausreichend Rückporto
(W-)8500 Nürnberg 40 schicken.
Deutschland
UseNet: htgoebel@faui09.informatik.uni-erlangen.de
Z-Netz: HARTMUT@ASN.zer
Fido: 2:246/12
Mein Dank gilt:
- Matthew Dillon: für seine genialen DME, aus dem ich viele Ideeen
bezogen habe.
- Volker Rudolph: für seine zahlreichen Tips und die moralische
Unterstützung
- Werner Speer: für die Starthilfe in Form des ersten Kommando-Parsers
- Tobias Ruland: für die Unterstützung in Sachen Assembler
---------------------------------------------------------------------------
Vorläufige Dokumentaion!! Vollständig, wird noch einmal gründlich
überarbeitet!
Inhalt
I Einleitung
Instalation, Starten
II Befehlsfolgen
III Tasten belegen
IV Das Verhalten bein Laden/speichern von Dateien
V Workbench Unterstützung
VI ARexx Unterstützung
VII Der Application-Port
----------------------
---------- I ----------
---------- Einleitung ----------
----------------------
AmokEd ist ein frei programmierbarer Editor, der auf dem Konzept des
bekannten DME vom Matthew Dillon basiert. Er verfügt über einige
Fähigkeiten, die ihn zu einem noch mächtigen (Programmier-) Werkzeug
machen. Hier ein kurzer Überblick:
- eine reichhaltige Kommandosprache, deren Befehle sowohl direkt
eingegeben, als auch auf Tasten gelegt werden können. (Jede Taste
kann durch Qualifier und Maustasten mit 128 verschiedenen Macros
belegt werden.) Jede Tasten und Maus-Tasten Kombination ist
belegbar.
- Eine ARexx-Schnittstelle ermöglicht eine noch vielfältigere
Programmierung von AmokEd durch externe Makros sowie die Steuerung
anderer Programme aus AmokEd heraus.
- Ein spezieller 'ApplicationPort' - basierend auf ARexx - ermöglicht
sehr leicht anwendungsbezogene Erweiterungen, die den Editor selbst
nicht unnötig aufblähen sollen. Unterstützung der Compiler
Amiga-Oberon und M2Amiga sind in Vorbereitung.
- Variablen ermöglichen eine fexible Macroprogrammierung (z.B. können
auch Macros in Variablen abgelegt werden), ENV:-Variablen werden
unterstützt.
- Vom Benutzer definierbare Menüs, die mit allen Macros oder
Variablen belegt werden können.
- schnelles Scrolling (ca. 40% schneller als original DME),
Scrollbalken und Scroll-Gadgets
- In der Titel-Zeile jedes Fensters werden Daten über den Text
angezeigt: Filename, aktuelle Cursorposition im Text, ob das File
geändert wurde ...
Zukünftige Versionen werden auch anwenderspezifische Angaben
erlauben
- mehrere Texte könne in verschiedenen Fenstern gleichzeitig
bearbeitet werden, Windows können 'iconified' werden.
Ab einer der nächten Versionen wird es möglich sein, einen Text in
mehreren Fenstern zu bearbeiten.
AmokEd wurde entwickelt, um einige Nachteile des DME zu beheben und
diesen weiter zu entwickeln. Durch die Programmierung in der streng
stukturierte Sprache Oberon ist er leicht zu erweitern. Dies wird
durch den Application- Port noch weiter vereinfacht.
AmokEd nimmt beliebig viele Filenamen als Argumente an. Diese Dateien
werden gleich nach dem Programmstart automatisch geladen.
Normalerweise führt AmokEd zu Beginn zwei Macro-Files aus: 'S:.aedrc'
und '.aedrc' im aktuellen Verzeichnis. Diese Dateien brauche nicht
existieren. Üblicherweise enthalten diese Dateien Tastaturbelegungen,
Menü-Definitionen etc. und stellen verschiedene Dinge ein.
Installation
------------
Falls Sie noch kein File 'S:.edrc' (z.B. von DME) haben, sollten Sie
das beigefügte '.aedrc' in Ihr 'S:'-Directory kopieren.
Falls Sie Ihre '.edrc'- Files von DME übernehmen wollen, lesen Sie
bitte die Hinweise in 'doc/von_DME.LiesMich', in der die wenigen
vorzunehmenden Änderungen erklärt werden.
Kopieren Sie nun AmokEd einfach in ein Verzeichnis, das dem Suchpfad
Ihrer Shell/CLI angehört.
Fertig!
Nach dem ersten Aufruf sollten Sie das Fenster auf die von Ihnen
bevorzugte Größe und Position bringen und mit SAVECONFIG abspeichern.
Den Befehl können Sie nach Druck aus die <ESC>-Taste in der
Befehlszeile eingeben. <RETURN> - Fertig!
Starten
-------
AmokEd ist ganz einfach zu starten:
vom CLI: AmokEd [name] [name] ... [name]
von der WorkBench: einfach anklicken (Multiselect wird unterstützt)
-------------------------
-------- II ----------
-------- Befehlsfolgen ----------
-------------------------
AmokEd verfügt über ein große Anzahl von Befehlen, die es
ermöglichen, ihn flexibel zu programmieren und weitgehend an die
Bedürfnisse des Benutzers anzupassen.
Es können mehrere Befehle miteinander angegeben werden, oder auch in
andere Befehle eingebetten werden.
Ein Befehl besteht aus einem SCHLÜSSELWORT und einer _festen_ Anzahl
von ARGUMENTEN (z.Zt. 0..2). Das Trennzeichen zwischen Argumenten ist
das SPACE. Um Argumente zu übergeben, die ein Space enthalten, müssen
diese in Klammern gesetzt werden. Bsp.: befehl (argument mit spaces).
Anstelle der Klammern können auch die einfachen
Anführungs-/Schlußzeichen (`') benutzt werden.
TEXT, der ausgegeben werden soll, wird ebenfalls in Klammern bzw.
Anführungs-/Schlußzeichen gesetzt.
Befehle können in Groß- oder Kleinschreibung eingegeben werden,
Argumente i.A. auch. Ausnahmen: Variablenname, Tastenbezeichnung
(siehe dort) und auszugebender Text.
Beispiele:
right right (Hallo) right right (Hallo) return
map f3 (up right) map f5 (down left)
map f10 ((Hallo))
Nochmal - weil's wirklich wichtig ist:
Wenn ein Befehl EIN Argument erwartet, dann nimmt es auch nur ein
Argument. Alle übrigen Argumente werden für für (einen) weitere(n)
Befehl(e) gehalten. Also:
map f5 right - `right' ist nur ein Wort, wir
brauchen keine Klammern
map f5 (right right) - wir wollen f4 mit zwei `right'
belegen, also brauchen wir die
Klammern, oder das zweite `right'
wird nicht aud die Taste gelegt
map c-del `repeat cright del' - ist bereits als REMEOL
implementiert, aber ein weiteres
Beispiel
Einige Argumente werden ggf. mehrmals durch den Befehlsinterpreter
geschickt. Der MAP-Befehl ist ein gutes Beispiel. Wenn der MAP-Befehl
ausgeführt wird, wird beim ersten Lauf durch den Interpreter die Taste
mit dem Tastentext ohne die äußersten Klammern belegt. Wenn die Taste
gedrückt wird, wird dieser Text nocheinmal vom Interpreter analysiert.
Darum muß Text, der ausgegeben werden soll, in doppelte Klammern
eingeschloßen werden: ((text)). Einige komplexerer Befehlsfolgen:
map f4 (right right (Hallo) wleft) *RICHTIG*
map f4 right right (Hallo) wleft *FALSCH*
map f4 (map f4 ((Hallo))) - wenn f4 das erste Mal gerückt wird,
belegt sie sich selbst um auf die
Ausgabe den Textes (Hallo)
map c-i (repeat tr (( ))) - Beispiel, wie ein Space in MAP un
REPEAT einzubetten ist (durchläuft den
Befehls- interpreter dreimal!)
Ein einfacher Weg, um mit Befehlsfolgen und/oder Tastaturbelegungen
herum zu spielen, ist entweder die ESC-Taste (dadurch gelangt man in
den Befehls- modus) oder a-S (alt-shift-s - dadurch wird die Zeile, in
der der Cursor ist, ausgeführt) zu drücken ...
AmokEd kann also benutzt werden, um Ihre neuen Tastaturbelegungen zu
ent- werfen und zu testen.
---------- STRINGVARIABLEN ----------
Stringvariablen werden durch ihren Inhalt ersetzt.
Drei Eingabeformen sind erlaubt:
$varname - der Varablenname kann nur aus a-z,A-Z,0-9,_,-
bestehen
$(varname) - alle Zeichen außer `(' und `)' sind erlaubt
$`varname' - alle Zeichen außer ``' und `'' sind erlaubt
Es gibt einige spezielle Variablen:
filename - der aktuelle Filename
scanf - der zuletzt geSCANFTe String (siehe SCANF unten)
rexxport - der Name des AmokEd-ARexx-Port
findstr - der aktuelle Suchstring
repstr - der aktuelle Ersatzstring
lineno - die aktuelle Zeilennummer (1..n)
colno - die aktuelle Spaltennummer (1..n)
Andere Variablen werden nach folgendem Schema gesucht:
(1) Interne Variablen (siehe SET, UNSET). Interne Variablen beachten
die Groß-/Kleinschreibung (case sensitiv).
(2) Enviroment-Variblen (siehe SETENV, UNSETENV). Enviroment-
Variablen sind NICHT case sensitiv. ENV: der WB1.3 wird benutzt.
(3) AmokEd-Tastaturbelegungen oder -Menüdefinitionen. Dies ermöglicht
es, etwas wie $sa-tab anzugeben um die Belegung der Taste
shift-alt-tab einzufügen (siehe MAP, UNMAP und Menü-Befehle).
Die anderen beiden Formen erlauben es, ungewöhnliche Varibalennamen
zu vergeben - mit Punkten oder andern Zeug.
ANMERKUNG: Was ist an folgenden Befehl falsch?
repeat 100 (first ($myvar))
Falsch ist, daß $myvar eingesetzt wird, BEVOR der Repeat ausgeführt
wird. $myvar könnte Zeichen enthalten, die die Befehlsbeschreibung
durcheinander bringen könnten. Wenn $myvar z.B. ein `(' enthält, kommt
etwas heraus wie `repeat 100 (first (()), was offensichtlich falsch
ist. Durch die Benutzung von `\' kann dies vermieden werden.
repeat 100 (first (\$myvar)) - $myvar wird eingesetzt, wenn die
Schleife ausgeführt wird, und
nicht vorher
Solche Probleme können auch auftreten, wenn Sie Tasten belegen...
Wahrscheinlich wollen Sie die Variable nicht in dem Moment eingesetzt
bekommen, wenn Sie die Taste belegen, sondern wenn die Belegung
ausgeführt wird.
Andererseits ist das durchaus erlaubt:
set x (tlate +1)
repeat 100 ($x)
Der Befehl `(tlate +1)' wird 100mal ausgeführt...
Würde die Variable nicht mit Klammern umschloßen (abhängig vom
Zusammemhang), würde die Variable ausgeführt, und nicht als Text
ausgegeben.
-------- SPEZIELLE ZEICHEN ---------
`^' wird benutzt, um ein Steuerzeichen einzuleiten.
Bsp.: ^c entspricht control-c (ASCII-Wert 03)
Es ist nicht möglich, ^@ (ASCII-Wert 00) anzugeben, da dieses
Zeichen intern das Zeilenende markiert.
`\' Der `Backslash' überschreibt die spezielle Bedeutung des nächsten
Zeichens.
Bsp.: map c-a ((^l)) - belegt ctrl-a mit ASCII-Wert 0C
map c-a ((\\\^l)) - belegt ctrl-a mit `^l'
Das erste `\' überschreibt das zweite,
das dritte das `^'. Die Taste ist dann
mit `\^l' belegt.
--------- BEFEHLS LISTE ---------
# -Rest der Zeile ist Kommentar (für Skript-Files)
(text) -gibt Text aus, als wäre er direkt eingegeben
taste -führt Tastaturbelegung als Makro aus (Bsp.: c-a)
header-item -führt einen Menüpunkt als Makro aus (Bsp.: Project-Save)
(case indepentant (?))
ABORT -bricht Makroausführung ab
APPL -rufe Application auf (siehe VII. `Application'-Port)
APPLCLOSE -beendee Application (siehe VII. `Application'-Port)
ARPBSAVE -BSAVE FileRequester \
ARPINSFILE -INSFILE FileRequester | wenn ARP-/ASL-Lib installiert
ARPLOAD -NEWFILE FileRequester |
ARPSAVE -SAVEAS FileRequester /
BACK -identisch mit BS
BACKTAB -Tabulatorsprung rückwärts
BCOPY -kopiere Block vor die Cursorzeile
BDELETE -lösche den Block aus dem Text
BLOCK -markiere Anfang/Ende des Blocks
BMOVE -verschiebe den Block vor die Cursorzeile
BOTTOM -springe zum Textende
BS -`backspace' (lösche Zeichen links vom Cursor)
BSAVE file -speichere den Block in <file>
BSOURCE -`source' Block wie ein Skript-File
CD dir -setze aktuelle Verzeichnis des Textes auf <dir>
CHFILENAME <name>-ändere den Namen des bearbeiteten Files
CLEARMAP -lösche Benutzer-Tastaturbelegung und stelle System-
Belegung her
DEL -`delete' (lösche Zeichen unterm Cursor)
DELINE -lösche Zeile (siehe UNDELINE)
DOWN -Cursor runter
DOWNADD -Cursor runter; wenn am Textende, füge Zeile an
ESC -schalte Befehlseingabezeile ein/aus
ESCIMM arg -schalte Befehlseingabezeile ein und zeige dort <arg> als
vordefinierte Eingabe
EXECUTE comm -führe CLI-Befehl aus
FIND string -setze Suchstring und führe ein NEXT aus
FINDR fstr rstr -setze Such/Ersatzstring und führe ein NEXTR aus
FINDSTR -setze Suchsting
FIRST -spring zu Spalte 1
FIRSTNB -springe zum ersten Nicht-Space-Zeichen in der Zeile
GOTO BLOCK -springe zum Anfang des markierten Blocks, bzw. Textanfang
GOTO END -springe zum Ende des markierten Blocks, bzw. nicht
GOTO START -identisch mit GOTO BLOCK
GOTO [+/-]n -springe zur absolut/relativ angegebeben Zeile
HEIGHT n -setze die Höhe in Pixels für alle weitern neuen Fenster
ICONIFY -`iconify' das Fenster (siehe unten)
IF cnd act -IF/WHILE/IFELSE .. (siehe unten)
IFELSE cnd ifact elseact -(siehe unten)
INSERT text -fügt <text> ein, unabhängig von InsertMode
INSFILE file -füge <file> in den Text ein
INSLINE -füge Zeile über der Cursorzeile ein
JOIN -verbinde ächste Zeile mit dieser
LAST -springe hinter letztes Nicht-Space-Zeichen der Zeile
LEFT -Cursor links
LEFTEDGE n -setze die linke Kante in Pixels für alle neuen Fenster
MAP key map -belege Taste <key> mit <map>
MARGIN n -setze rechten Rand für WordWrap und Reformat (siehe dort)
MENUADD hdr item cmd -füge Menüpunkt an
MENUCLEAR -lösche das ganze Menü
MENUDEL hdr item -lösche eine Menüpunkt
MENUDELHDR hdr -lösche ein Untermenü
MENUOFF -schalte Menü aus (mehrfache Aufrufe werden gestapelt)
MENUON -schalte Menü ein (mehrfache Aufrufe werden gestapelt)
MULTIREPLACE f s -interactives Suchen und Ersetzen
MYPRI n -setze Task-Priorität auf n (-128<=n<=127)
NEWFILE file -ersetzt aktuelle Text durch das neue <file>
NEWWINDOW -öffne ein neues Editor-Fenster
NEXT -suche die nächste Stelle, an der der Suchstring auftritt
NEXTR -suche nächstes Auftreten und ersetze
NULL -mache nichts
OVERWRITE text -schreibt <text> über vorhandenen, unabhängig von InsertMode
PAGEDOWN -blättere eine Seite abwärts (siehe PAGESET)
PAGESET n -setze Seitengröße für PAGEUP/DOWN auf n Prozent Fenstergröße
PAGEUP -blättere eine Seite aufwärts (siehe PAGESET)
PING n -setze Textmarkierung (0-9)
PONG n -springe zu eine vorher gesetzten Textmarkierung (0-9) *)
POPMARK -hole Markierung von Stapel und zeige den markierten Block
PURGEMARK -lösche den Stapel der Blockmarkierungen
PUSHMARK -lege markierten Block auf den Stapel und lösche Markierung
QUIT -beende
RECALL -gehe in Befehlszeile und zeige den zuletzt eingegebenen
Befehl an. Muß auf eine Taste gelegt sein (c-esc).
REMEOL -lösche Text unter und rechts vom Cursor
REPEAT cnd comm -siehe unten
REPSTR string -setzte Ersatzstring
RESETTOGGLE toggle -lösche Kippschalter (siehe unten)
RESIZE cols rows -ändere Größe des aktuellen Fensters (Bsp.: resize 70 23)
RETURN -identisch mit (FIRST DOWNADD)
RIGHT -Cursor rechts
RX -rufe ARexx-Makro, kein Argument (RX makroname) (s. unten)
RX1 -rufe ARexx-Makro, ein Argument (RX makroname arg)
RX2 -rufe ARexx-Makro, zwei Argumente (RX makroname arg1 arg2)
RXS -rufe ARexx-Befehlsfolge direkt auf
SAVEAS file -speichere aktuellen Text als <file>
SAVECONFIG -speichere Standard-Einstellungen
SAVEMAP file -speichere Benutzer-Tastaturbelegung in <file>
SAVEOLD -speichere aktuellen Text unter seinen Namen
SAVESMAP file -speichere alle Tastaturbelegungen incl. Systembelegung
SCANF ctlstr -scan den String an der Curorposition (siehe unten)
SCREENBOTTOM -setze Cursor in die letzte Zeile des Fensters
SCREENTOP -setze Cursor in die erste Zeile des Fenstern
SCROLLDOWN -rolle Text eine Zeile nach oben, ohne Cursor zu bewegen
SCROLLUP -rolle Text eine Zeile nach unten, ohne Cursor zu bewegen
SET var str -erzeuge/ändere eine interne Variable
SETENV var str -erzeuge/ändere eine Umgebungs-Variable (WB1.3 ENV:)
SETFONT font size-setze den Font des Fensters (Bsp.: setfont topaz.font 11)
SETTOGGLE toggle -setze Kippschalter (siehe unten)
SOURCE file -`source' ein Skript-File
SPLIT -spalte die Zeile an der Cursorposition
SWAPMARK -PUSHMARK, tausche obere 2 Markierungen auf Stapel, POPMARK
TAB -Tabulatorsprung vorwärts
TABSTOP n -setze Tabulatorstop alle n Zeichen
TITLE string -zeige <string> in der Titelzeile des Fensters
TLATE [+/-]n -gib Zeichen unter dem Cursor ASC-Wert n (absolut/relativ)
TMPHEIGHT n -setze Höhe in Pixels nur für das nächste neue Fenster
TMPWIDTH n -setze Breite in Pixels nur für das nächste neue Fenster
TOGGLE toggle -schalte Kippschalter um (siehe unten)
TOMOUSE -bewege den Cursor zur Mausposition
TOP -springe zum Textanfang
TOPEDGE n -setze die Oberkante in Pixels für alle neuen Fenster
UNBLOCK -lösche aktuelle Blockmarkierung
UNDELINE -holt die zuletzt mit DELINE gelöschte Zeile zurück
UNDO -mache Anderungen in der aktuelle Zeile rückgängig (muß auf
eine Taste gelegt werden, damit's funktioniert)
UNMAP key -lösche Belegung der Taste <key>
UNSET var -lösche interne Variable
UNSETENV var -löschen Umgebungs-Variable (WB1.3 ENV:)
UP -Cursor hoch
WHILE cnd act -(siehe unten)
WIDTH n -setze die Breite in Pixels für alle weitern neuen Fenster
WLEFT -gehe an den Anfang des vorherigen Worts; wenn innerhalb
eines Wortes, dann an den Anfang diese Wortes
WRIGHT -gehe an den Anfang des nächsten Worts
*) PONG springt auch in ein anderes Textfenster. Wenn Sie ein Tool ein-
setzten, das das Fenster unter der Maus aktiviert (z.B. DMouse),
funktioniert dies nicht mit dem gewünschten Effekt.
---------- Weitere Inforamtionen zu kompizierteren Befehlen ------------
MENUOFF/ON - Diese Befehle schalten das Menü ein bzw. aus.
Für Leute, die eine Menge MENUADD in ihrer `.aedrc'
haben, ist es gut zu wissen, daß MENUADD wesendlich
schneller arbeitet, wenn das Menü vorher ausgeschaltet
wird. (Danach natürlich wieder einschalten!)
Die Aufrufe sind stapelbar. D.h. wenn Sie MENUOFF,
sagen wir, zweimal aufrufen, dann benötigen Sie auch
zwei MENUON, um das Menü wieher einzuschalten.
Andersrum funktioniert's natürlich nicht :-)
SCANF cltstr - Dieser Befehl ist gleichbedeutend mit der C-Funktion
scanf().
Es werden jedoch nur Strings gescannt.
REPEAT n arg - Wiederhole <arg> n-mal
Außer einer Nummer kann n folgendes sein:
line aktuelle Zeilennummer (Zeilen beginnen bei 1)
lbot Anzahl Zeilen zum Textende, mit der Cursorzeile
cleft Spaltennummer (Spalten beginnen bei 0)
cright Anzahl Zeichen bis zum Zeilenende (EOL),
incl. Zeichen unterm Cursor
tr Anzahl Zeichen zum nächsten Tabulatorstop
tl Anzahl Zeichen zum vorherigen Tabulatorstop
Verschiedene Befehle können die Repeat-Schleife
abbrechen: Jeder FIND[R], NEXT[R], PREV[R], in dem der
Suchstring nicht gefunden wird, bricht die Schleife
(und das Makro) ab. Das Selbe geschieht, bei Befehlen
über die Textgrenzen hinaus gehen konnen (z.B. UP,
DOWN, LEFT, RIGHT ...).
Natürlich beendet auch ABORT das Makro.
Wenn Sie -1 als n angeben, so wird der REPEAT ewig
ausge- führt (genau genommen $7FFFFFFF-mal, was
eigentlich reichen müßte), oder bis zu einem Abbruch.
Bsp.: Suchen/Ersetzten im ganzen Text
map c-R (escimm (findstr ) escimm (repstr ) repeat -1 nextr)
IF [!]bedingung arg
WHILE [!]bedingung arg
IFELSE [!]bedingung ifarg elsearg
- Wenn die angegebenen Bedingung erfüllt ist, führe das
Argument aus. Bei IFELSE ansonsten das Else-Argument.
Bei WHILE wird das Argument solange ausgeführt,
solange die Bedingung erfüllt ist. (Vorsicht!)
Ein ggf. vorangestelltes `!' invertiert die Logik.
Bedingungen:
[i]# Kippschalter [i]# gesetzt (siehe unten)
t Cursor in Zeile 1
b Cursor in der letzten Zeile
l Cursor in Spalte 0
r Cursor am Zeilenende (Space darunter und dahinter)
m Text wurde geändert (modified)
i Einfügemodus eingeschaltet (insertmode on)
x[<=>]# Cursor in Spalte # (beginnen mit 1) *)
y[<=>]# Cursor in Zeile # (beginnen mit 1) *)
cl Zeichen unter Cursor ist Kleinbuchstabe (`a'..`z')
cu Zeichen unter Cursor ist Großbuchstabe (`A'..`Z')
ca Zeichen unter Cursor ist alpha-numerisch
(`a'..`z', `A'..`Z',`0'..`9', `_', 192..255)
cn Zeichen unter Cursor ist Ziffer
c[<=>]# Zeichen unter Cursor hat ASCII-Wert # *)
cb Curosr ist innerhalb des markierten Blocks
*) eines oder eine Kombination der Zeichen `<', `=', `>',
gefolgt von einer Dezimalzahl. Bsp.: y=>23
if c<32 .. Zeichen unterm Cursor ist kleiner als 32
if c<>32 .. Zeichen unterm Cursor ist ungleich 32
if !c=32 .. dito
while !b down
Bsp.: simulieren eines Einfügemodes-Kippschalters
(muß natürlich in einer Zeile eingegeben werden)
map a-i (ifelse 0 (toggle 0 settoggle insertmode)
(toggle 0 resettoggle insertmode))
Bsp.: solange Kleinbuchstabe: mache groß, gehe nach rechts
map c-U (while cl (tlate -32 right)
ICONIFY - Dies ist eine besondere Fähigkeit des AmokEd:
Das Textfenster wird auf die Titelzeile reduziert.
Dadurch behalten Sie auch bei vielen Fenstern noch den
Überblick.
· merkt sich alte Fenstergröße und -position
· merkt sich die Position des `iconified'-Fensters für
weitere `iconify'
Momentan stürtzt der Computer ab, wenn kein Speicher
vorhanden ist und AmokEd das Icon- oder das normale
Fenster nicht öffnen kann. Seien Sie also Vorsichtig!
Abhilfe wird aber bald geschaffen!
TOGGLE toggle
SETTOGGLE toggle
RESETTOGGLE toggle
- Mir diesen Befehlen werden Kippschalter (toggles)
geschaltet.
Es gibt 256 globale Toggles, die im gesammtem AmokEd
Gültigkeit haben, sowie für jeden Text 15 texteigene
Toggles. Zudem gibt es einige spezielle Toggles, die
z.B. den Einfügemodus schalten.
Im Einzelnen gibt es folgende Togglen:
i0..i15 texteigener Toggles (ein `i' wird vorangestellt)
0..255 globaler Toggle
wordwrap automatischer Zeilenumbruch +) *)
insertmode Einfügemodus +)
savetab File mit Tabs abspeichern (siehe unten) +)
autoindent automatisches Einrücken +) *)
numlock NumLock für Zehnerblock
ignorecase Suchen unabhängig von Groß-/Kleinschreibung
+) diese Toggles sind ebenfalls texteigen
*) dieser Toggle ist momentan leider noch ohne Wirkung
--------------------------
---------- III ----------
---------- Tasten belegen -----------
--------------------------
In Abschnitt II haben wir gesehen, wie AmokEd zu programmieren ist
(ja, ich denke `programmiernen' ist der richitge Ausdruck.
Richtig interessant wird es jedoch erst, wenn man die Markros auf
Tasten legt. Dies können Sie auf drei Arten tun:
1. Für Ihre Standardbelegung erstellen Sie am besten ein `.aedrc',
das die gewünschten Tastaturbelegungen, die Menudefinitionen etc.
ent- hält.
2. Wenn Sie während der laufenden Arbeit mit AmokEd Tasten belegen
wollen, weil Sie z.B. den Text `Rübennase' oft benötigen, geben
Sie den MAP-Befehl einfach in der Befehlszeile ein.
3. Wollen Sie die neue Makrodefinition zudem in Ihre `.aedrc'
aufnehmen, so geben Sie sie dort ein, und führen die neue Zeile
mit der Tasten- kombination `a-S' aus. Abspeichern, fertig!
TASTATUR
Bei AmokEd ist, anders als bei vielen Text-Editoren, JEDE Taste der
Amiga- Tastatur belegbar, egal ob mit oder ohne `Qualifier'. Qualifier
sind hier Tasten wie Shift, Ctrl, Amiga, aber auch die Maustasten.
Es hat sich eigentlich nur aus der Gewohnheit heraus ergeben, daß
z.B. die <Return>-Taste ein RETURN ausführt und die <Up>-Taste ein UP
etc. Aber Sie können _alle_ Tasten auch völlig anders belegen.
Die Tasten werden nach ihrer Aufschrift benannt, mit einigen Ausnahmen:
· `Rückschritt' (Backspace) heißt `BS'.
· den Tasten des Zehnerblocks wird `NK' verangestellt, außer bei der
`Enter'-Taste, die heißt `ENTER'.
· Die vier Cursor-Tasten heißen `UP', `DOWN', `LEFT' und `RIGHT'.
Tasten belegen
Tasten werden mit dme MAP-Befehl belegt (siehe oben).
<key> entspricht dabei folgender Syntax:
[qual-]<taste> qual: eine Kombination aus den Qualifer-
Kennungen, gefolgt von einem Bindestrich `-'
taste: Tastenaudschrift bzw. -name
Qualifier: `a' ALT
`s' SHIFT
`c' CTRL
`A' AMIGA
`L', `M', `R' Maustasten
--- Beispiele ---
tab tab
-tab tab
a-a ALT a
A-a AMIGA a
sA-a SHIFT AMIGA a
s-tab SHIFT tab
c-tab CTRL tab
ac-? ALT-CTRL ?
s-f5 SHIFT F5
nk0 Zehnerblock 0
cs-nk0 CTRL SHIFT Zehnerblock 0
s-. SHIFT . (':' auf deutschen Tastaturen)
L-f10 LINKE MAUSTASTE f10
L-lmb Linke Maustaste gedrückt
L-mmove Maus bewegt mit gedrückter linker Maustaste
LR-lmb Linke Maustaste gedrückt, während rechte Maustaste
gedrückt bleibt
-----------------
MAUSTASTEN
Auch die Tasten der Maus können belegt werden,
Die drei Maustasten heißen `LMB', `MMB', `RMB'.
Die Standardbelegung ist folgende:
linker Knopf: Setze den Cursor an die Mausposition (TOMOUSE)
rechter Knopf: `iconify' Fenster (ICONIFY), nur wenn Menü aus ist
Linken Knopf gedrückt halten, während die Maus bewegt wird, zieht
den Cusor mit.
Maustasten belegen
Die Maustasten dienen sowohl als Qualifier (siehe oben), als auch
als Tasten.
Dadurch können sie eine Taste belegen, die eine gedrückte
Maustaste er- fordert
map L-a ((Linke Maustaste und `a'))
genause, wie die Maustasten selbst
map L-lmb ((Linke Maustaste als Taste))
Beachten Sie, daß hierzu der Qulifier <Linke Maustaste> `L' und
die linke Maustaste selber `lmb' angegeben werden müssen.
Wenn Sie eine Maustaste selbst und diese Maustaste als Qualifier belegten,
map L-lmb (tomouse)
map L-a ((Hallo))
beachten Sie bitte, daß die erste Belegung immer dann ausgeführt
wird, auch wenn Sie L-a ansprechen möchten: BEIDE Belegungen würde
ausgeführt!
Um Verwirrungen zu vermeiden, sollten Sie die Standardbelegung der
rechte Maustaste (belegt mit ICONIFY) löschen (UNMAP), wenn sie
diese als Qualifier benutzten wollen.
Die MAUSBEWEGUNG wird belegt, indem Sie eine oder mehrere der
Maus-Qualifier (`L', `M', `R') und als Taste `mmove' angeben. Also
so:
map L-mmove ((Maus bewegt mit gedrückter linker Maustaste))
map LR-lmb ((Linke Maustaste drückt, rechte Maustaste bleibt gedrückt))
Wie wäre es damit: Die Zeichen under dem Cursor in Großbuchstaben
wandeln, solange die Mause bewegt wird?
map LR-mmove (tomouse if cl (tlate -32))
HINWEISE
Die normale Amiga-Maus hat nur zwei Tasten, eine linke und eine
rechte (LMB, RMB - logisch!). Eine ggf. angeschloßenen
Drei-Tasten-Maus wird auch unterstützt.
Jede Taste kann mit einer Kombination aus Shift, Alt, Ctrl, Amiga
und den Maustasten (oder gar keiner) bestimmt werden. Mit diesen
sechs Qualifiern (sieben bei Drei-Tasten-Maus) konnen jeder Taste
bis zu 64 (128) Belegungen zugewiesen werden.
Die CAPS-LOCK-Taste, wenn sie leuchtet, ist für Alpha-Tasten
gleichbedeutend mit <Shift>.
Die Kombination Alt-Amiga (aA) ist nicht sehr brauchbar, da
Intuition sie Mause-SELECT interpretiert. Andere Amiga-Konbinationen
werden von Intuition für Mausbewegung und andere Dinge benutzt.
Einige andere Qulifier-Kombi- nationen können wegen einer speziellen
Bedeutung auch unbrauchbar sein.
Die Standardbelegung
Alle druckbaren Ascii-Tasten sind mit ihrem Ascii-Equiavlent
belegt. BS, DEL, UP, DOWN, LEFT, RIGHT, TAB, S-TAB, und ENTER sind
korrekt belegt. Und das ist die Standardbelegung:
map (a-c) (bcopy)
map (a-d) (bdelete)
map (a-down) (scrolldown)
map (a-l) (while cu (tlate +32 right))
map (a-m) (bmove)
map (a-r) (nextr)
map (a-s) (bsource)
map (a-u) (while cl (tlate -32 right))
map (a-up) (scrollup)
map (bs) (bs)
map (c-/) (escimm (find ))
map (c-]) (ref)
map (c-[) (ctags)
map (c-1) (goto block)
map (c-b) (block)
map (c-c) ()
map (c-del) (remeol)
map (c-down) (pagedown)
map (c-esc) (recall)
map (c-f) (reformat)
map (c-g) (escimm (goto ))
map (c-i) (insertmode on)
map (c-j) (join)
map (c-l) (wleft)
map (c-n) (next)
map (c-o) (insertmode off)
map (c-p) (prev)
map (c-q) (quit)
map (c-r) (wright)
map (c-s) (split first down)
map (c-u) (unblock)
map (c-up) (pageup)
map (c-w) (wordwrap toggle)
map (del) (del)
map (down) (down)
map (enter) (return)
map (esc) (esc)
map (f1) (escimm (insfile ))
map (f10) (saveold quit)
map (f2) (escimm (newfile ))
map (f3) (escimm (newwindow newfile ))
map (f6) (saveold iconify)
map (f7) (escimm (bsave ))
map (f8) (saveold escimm (newfile ))
map (f9) (saveold)
map (L-lmb) (tomouse)
map (L-mmo) (tomouse)
map (left) (left)
map (R-rmb) (iconify)
map (return) (return insline up firstnb down)
map (right) (right)
map (s- ) (( ))
map (s-del) (deline)
map (s-down) (bottom)
map (s-left) (first)
map (s-right) (last)
map (s-tab) (backtab)
map (s-up) (top)
map (sa-s) (unblock block block bsource)
map (tab) (tab)
map (up) (up)
map `a-)' (`:-)') ein Standard-Smily
-------------------------------
---------- VI ----------
---------- ARexx Unterstützung ----------
-------------------------------
Sie haben von ARexx vollen Zugriff auf alle Funktionen von AmokEd.
In zukünftigen Versionen wird es zudem einige Befehle geben, die Sie
nur von ARexx oder einem ARexx-Programm nutzen können (z.B.
Rückgabewerte).
ARexx-Makros aufrufen
Es gibt drei Möglichkeiten, externe ARexx-Makros aufzurufen:
· Die Befehle RX, RX1, RX2 rufen das als erstes Argument übergeben
ARexx-Makro mit keinem, einem oder zwei Argumenten auf. Wollen
sie mehr Argumente übergeben, benutzen Sie einfach RX1 und setzen
alle Argumente in Klammern. Bsp.:
rx demo
rx1 renumcomproc 119
rxs DelAllAsterix 23 28
rx1 MakroMitVielenArgs (1 2 3 4 5 6 7)
· Die zweite Möglichkeit ARexx-Makros aufzurufen ist, den
Markonamen einfach in der Befehlszeile einzugeben, dahinter die
Argumente. Stößt AmokEd auf einen Befehl, den er nicht kennt,
übergibt er ihn als Makro- name an ARexx. Der gesamte Rest der
Befehlszeile wird als Argument übergeben. Dies funktioniert bei
Tastenbelegungen genauso, Sie sollten dort aber besser die
RX-Befehle explizit benutzen. Bsp.:
MakroMitVielenArgs 1 2 3 4 5 6 7
· Der Befehl RXS erlaubt Ihnen, ARexx-Befehle direkt auszuführen.
Das Argument wird hierbei nicht als Makroname, sondern als
Befehlsstring ("stringfile" lt. ARexx-Handbuch) interprettiert
und direkt ausgeführt. Bsp.:
rxs (address command 'copy #? ram:')
Von den ARexx-Makros aus können Sie die Befehle des AmokEd wie
gewohnt benutzen. Anhand es Rückgabewertes rc (in ARexx) können Sie
feststellen, ob wie gewünschte Funktion erfolgreich war. Mehr
darüber entnehem Sie bitte der gesonderten Dokumentation Über die
Applikation-Programmierung.
AmokEd über ARexx von außen steuern
AmokEd läßt sich auch von externen ARexx-Makros steuern, die nicht
von AmokEd aus aktiviert wurden. Dazu muß Ihnen (bzw. dem Makro)
lediglich bekannt sein, wie der ARexx-Port des AmokEd heißt, an den
sie senden wollen. Der Port-Name ist in der Variablen $rexxport
gespeichert, da er von der Task-Adresse abhängig ist.
Wenn sie nur einen AmokEd aktiv und die RexxArpLib installiert
haben, können sie mit
rxs (setenv rexxport $rexxport)
den Port-Namen als ARexx-Enviroment-Variable istallieren.
Bessere Möglichkeiten bietet der Einsatz von Applikationen (siehe
unten).
Es gibt zwei spezielle ARexx-Befehle, die nur über den ARexx-Port
funktionieren:
GetVal - Liefert den die angegebene Variable zurück
Bsp: der AEd-Befehl
rxs (options results; getval $rexxport; say result)
gibt den Name des AEd-Rexx-Ports im Rexx-StdOut aus.
QuitQuit - Beendet die aktuellen Texteingabe, auch wenn der Text
geändert wurde
Es ist nicht möglich, AmokEd von ARexx aus mit Senden von zwei
'quit' Befehlen zu beenden, wenn der Text geändert wurde. ARexx
erhält immer RC 5.
ACHTUNG: Der aktuelle Text wird beendet, auch wenn er geändert
und noch nicht abgespeichert ist.
Weitere Informationen über den Einsatz von AReex in AmokEd
entnehmen Sie bitte der gesonderten ARexx-Dokumentation.
--------------------------------
---------- VII ----------
---------- Der Application-Port ----------
--------------------------------
Eine weitere hervoragende Eigenschaft von AmokEd ist der
Applikation-Port. Über diesen Port auf ARexx-Basis können Anwendungen
eine enge Bindung an AmokEd erreichen.
Eine Applikation muß sich selbst bei AmokEd anmelden. Hierzu benötigt
sie den Portnamen, über den sie mit AmokEd kommunizieren kann. Dieser
Portname ist über die Variable $rexxport erreichbar.
Eine Applikation von AmokEd aus zu starten, ist ganz einfach:
Bsp.:
execute (run <nil: >nil: AmokEd:ApplDemo $rexxport)
Wichtig ist hierbei, daß Sie die Applikation als eigene Task
starten, da sich das System sonst aufhängt.
Die Applikation meldet sich nun bei AmokEd an und teilt ihm mit,
unter welchen Applikations-Namen sie zu erreichen ist.
Ist dies geschehen, so kann sie sehr einfach genutzt werden:
· Geben Sie den Applikations-Name einfach in der Befehlszeile ein.
Der Rest der Zeile wird der Applikation als Argumetn mitübergeben.
· Mit dem Befehl `APPL' können Sie wir mit dem Befehl RX1 eine
Applikation mit einem Argument aufrufen.
Wenn Sie Applikationen in Makros nutzen, sollten sie diesen Befehl
nehmen.
Bsp.:
ApplDemo Hallo Du!
appl ApplDemo (Hallo Du!)
Genaueres ist von der eingesetzten Appliktion abhängig. Liesen Sie hierzu
dir Dikomentaion der Appliketion.
Alles weitere über Applikationen - Programmierung etc. - entnehmen Sie
bitte der gesonderten Dokumentation.
---------------------------------------------------------------------------
Sorry, wenn die deutsche Dokumentation etwas holprig klingt. Aber
manche Sachen lassen sich in Englich schöner ausdrücken.
Ich werde, wenn ich mal Zeit hab, auch eine vollkommen neue Doku
schreiben, da ich von Freunden weiß, das diese nicht so gut ist (insb.
zum nachschlagen).
Wie gesagt: Vorläufige Dokumentation!
-- hartmut
---------------------------------------------------------------------------
Release Notes:
Bedeutung: + hinzugekommen, - entfernt, ^ Funktion verbessert
V1.02b - 21 Oct 1991
- Bug in ArpLoad (File/path-Split)
V1.02 - 19 Oct 1991
· ältere Release Notes gelöscht